// pages/search/search.js
const app = getApp();

Page({
    data: {
        url: '', // 基础接口地址
        searchValue: '',        // 搜索框输入内容
        searchResult: [],       // 通用搜索结果
        showResult: false,      // 是否显示搜索结果
        searchHistory: [],      // 搜索历史记录
        showHistory: true,      // 是否显示历史记录
        hasSearchData: false,   // 用于判断显示哪个搜索框的关键变量
        loading: false,         // 加载状态

        // 分类数据存储
        zhuanjia: [],           // 心理专家数据
        articles: [],           // 心理文章数据
        tests: [],              // 心理测试数据
        answers: [],            // 提问回答数据

        // 分类筛选结果
        filteredZhuanjia: [],   // 筛选后的专家
        filteredArticles: [],   // 筛选后的文章
        filteredTests: [],      // 筛选后的测试
        filteredAnswers: []     // 筛选后的回答
    },

    onLoad() {
        // 读取全局URL配置
        if (app && app.globalData && app.globalData.url) {
            this.setData({
                url: app.globalData.url
            }, () => {
                // 加载所有数据
                this.loadAllData();
            });
        } else {
            console.error('全局URL配置不存在，请检查app.js');
            wx.showToast({
                title: '配置错误',
                icon: 'none'
            });
        }

        // 读取搜索历史
        const history = wx.getStorageSync('searchHistory') || [];
        this.setData({ searchHistory: history });
    },

    // 统一管理所有数据加载
    loadAllData() {
        this.setData({ loading: true });
        let loadedCount = 0;
        const totalApis = 4;

        // 所有接口加载完成后的处理
        const handleComplete = () => {
            loadedCount++;
            if (loadedCount === totalApis) {
                this.setData({
                    loading: false,
                    // 判断是否有任何数据
                    hasSearchData: this.data.zhuanjia.length > 0 ||
                                  this.data.articles.length > 0 ||
                                  this.data.tests.length > 0 ||
                                  this.data.answers.length > 0
                });

                // 显示数据状态提示
                if (!this.data.hasSearchData) {
                    wx.showToast({
                        title: '暂无相关数据',
                        icon: 'none'
                    });
                } else {
                    // 打印数据统计，确认数据已加载
                    console.log('数据加载完成 - 统计:', {
                        专家数量: this.data.zhuanjia.length,
                        文章数量: this.data.articles.length,
                        测试数量: this.data.tests.length,
                        问答数量: this.data.answers.length
                    });
                }
            }
        };

        // 加载四类数据，使用指定的接口URL
        this.loadZhuanjia(handleComplete);
        this.loadArticles(handleComplete);
        this.loadTests(handleComplete);
        this.loadAnswers(handleComplete);
    },

    // 心理专家数据加载
    loadZhuanjia(callback) {
        wx.request({
            url: this.data.url + 'consultant',
            method: 'GET',
            success: (res) => {
                console.log('心理专家接口返回:', res.data);
                if (res.data && (res.data.code === 200 || res.data.code === 0)) {
                    this.setData({
                        zhuanjia: res.data.data?.list || []
                    });
                    console.log('解析后专家数量:', this.data.zhuanjia.length);
                } else {
                    this.setData({ zhuanjia: [] });
                }
            },
            fail: (err) => {
                console.error('心理专家接口请求失败:', err);
                this.setData({ zhuanjia: [] });
            },
            complete: callback
        });
    },

    // 心理文章数据加载
    loadArticles(callback) {
        wx.request({
            url: this.data.url + 'seleart',
            method: 'GET',
            success: (res) => {
                console.log('心理文章接口返回:', res.data);
                if (res.data && (res.data.code === 200 || res.data.code === 0)) {
                    this.setData({
                        articles: res.data.data?.list || []
                    });
                    console.log('解析后文章数量:', this.data.articles.length);
                } else {
                    this.setData({ articles: [] });
                }
            },
            fail: (err) => {
                console.error('心理文章接口请求失败:', err);
                this.setData({ articles: [] });
            },
            complete: callback
        });
    },

    // 心理测试数据加载
    loadTests(callback) {
        wx.request({
            url: this.data.url + 'PsyAss',
            method: 'GET',
            success: (res) => {
                console.log('心理测试接口返回:', res.data);
                if (res.data && (res.data.code === 200 || res.data.code === 0)) {
                    this.setData({
                        tests: res.data.data?.list || []
                    });
                    console.log('解析后测试数量:', this.data.tests.length);
                } else {
                    this.setData({ tests: [] });
                }
            },
            fail: (err) => {
                console.error('心理测试接口请求失败:', err);
                this.setData({ tests: [] });
            },
            complete: callback
        });
    },

    // 提问回答数据加载
    loadAnswers(callback) {
        wx.request({
            url: this.data.url + 'psyreply',
            method: 'GET',
            success: (res) => {
                console.log('提问回答接口返回:', res.data);
                if (res.data && (res.data.code === 200 || res.data.code === 0)) {
                    this.setData({
                        answers: res.data.data?.list || []
                    });
                    console.log('解析后问答数量:', this.data.answers.length);
                } else {
                    this.setData({ answers: [] });
                }
            },
            fail: (err) => {
                console.error('提问回答接口请求失败:', err);
                this.setData({ answers: [] });
            },
            complete: callback
        });
    },

    // 输入变化处理
    onInputChange(e) {
        const value = e.detail.value.trim();
        this.setData({ searchValue: value });

        if (value) {
            this.setData({ showHistory: false });
        } else {
            this.setData({
                showResult: false,
                filteredZhuanjia: [],
                filteredArticles: [],
                filteredTests: [],
                filteredAnswers: [],
                showHistory: true
            });
        }
    },

    // 执行搜索 - 严格按照指定字段进行查询
    doSearch(keyword) {
        if (this.data.loading) {
            wx.showToast({ title: '数据加载中，请稍候', icon: 'none' });
            return;
        }

        if (!this.data.hasSearchData) {
            wx.showToast({ title: '无数据可搜索', icon: 'none' });
            return;
        }

        wx.showLoading({ title: '搜索中...' });

        // 严格按照指定字段进行筛选
        const filteredZhuanjia = this.data.zhuanjia.filter(item => 
            // 心理专家仅查询name字段
            (item.name || '').includes(keyword)
        );

        const filteredArticles = this.data.articles.filter(item => 
            // 心理文章仅查询title字段
            (item.title || '').includes(keyword)
        );

        const filteredTests = this.data.tests.filter(item => 
            // 心理测试仅查询name字段
            (item.name || '').includes(keyword)
        );

        const filteredAnswers = this.data.answers.filter(item => 
            // 提问回答仅查询replyContent字段
            (item.replyContent || '').includes(keyword)
        );

        wx.hideLoading();

        // 显示无结果提示
        if (filteredZhuanjia.length === 0 && 
            filteredArticles.length === 0 && 
            filteredTests.length === 0 && 
            filteredAnswers.length === 0) {
            wx.showToast({
                title: `没有找到"${keyword}"相关内容`,
                icon: 'none'
            });
        }

        this.setData({
            filteredZhuanjia,
            filteredArticles,
            filteredTests,
            filteredAnswers,
            showResult: true
        });

        this.addToHistory(keyword);
    },

    // 清空搜索框
    onClear() {
        this.setData({      
            searchValue: '',
            filteredZhuanjia: [],
            filteredArticles: [],
            filteredTests: [],
            filteredAnswers: [],
            showResult: false,
            showHistory: true
        });
    },

    // 确认搜索
    onSearch() {
        const { searchValue } = this.data;
        if (searchValue.trim()) {
            this.doSearch(searchValue);
            this.addToHistory(searchValue);
        }
    },

    // 添加搜索历史
    addToHistory(keyword) {
        let history = this.data.searchHistory;
        // 检查是否已存在相同的搜索记录
        const index = history.indexOf(keyword);
        if (index !== -1) {
            // 如果存在，先删除再添加到开头
            history.splice(index, 1);
        }
        // 添加到开头
        history.unshift(keyword);
        // 限制历史记录数量为10条
        if (history.length > 10) {
            history = history.slice(0, 10);
        }
        // 更新数据和本地存储
        this.setData({
            searchHistory: history
        });
        wx.setStorageSync('searchHistory', history);
    },

    // 清空搜索历史
    clearHistory() {
        wx.showModal({
            title: '提示',
            content: '确定清空搜索历史吗？',
            success: (res) => {
                if (res.confirm) {
                    this.setData({ searchHistory: [] });
                    wx.removeStorageSync('searchHistory');
                }
            }
        });
    },

    // 点击历史记录搜索
    searchHistoryItem(e) {
        const keyword = e.currentTarget.dataset.keyword;
        this.setData({ searchValue: keyword, showHistory: false });
        this.doSearch(keyword);
    }
});
